package com.zhongfl.crm.service.impl.crm;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zhongfl.crm.mapper.crm.StaffExtMapper;
import com.zhongfl.crm.model.crm.StaffExt;
import com.zhongfl.crm.request.RxStaffExt;
import com.zhongfl.crm.service.crm.StaffExtService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import tech.heptagram.staff.cas.common.AssertUtils;

import javax.annotation.Resource;
import java.util.List;

/**
 * 员工拓展服务实现类
 * @author 木叶丸
 * @date 2019/3/13 19:24
 */
@Service
public class StaffExtServiceImpl implements StaffExtService {

    @Resource
    private StaffExtMapper staffExtMapper;

    /**
     * 根据员工编码查询
     *
     * @param staffCode 员工编码
     * @return 拓展信息
     */
    @Override
    public StaffExt findByStaffCode(String staffCode) {
        AssertUtils.hasText(staffCode, "员工编码为空，根据员工编码查询拓展信息失败！");
        return staffExtMapper.selectByStaffCode(staffCode);
    }

    /**
     * 插入或更新报单部门信息
     *
     * @param ext 拓展信息
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveOrUpdateBusinessDept(StaffExt ext) {
        AssertUtils.notNull(ext, "拓展信息为空，新增或更新员工拓展信息失败！");
        AssertUtils.notNull(ext.getStaffCode(), "员工编码为空，新增或更新员工拓展信息失败！");
        AssertUtils.notNull(ext.getStaffName(), "员工姓名为空，新增或更新员工拓展信息失败！");
        AssertUtils.notNull(ext.getBusinessDeptId(), "报单部门ID为空，新增或更新员工拓展信息失败！");
        AssertUtils.notNull(ext.getBusinessDeptName(), "报单部门名称为空，新增或更新员工拓展信息失败！");
        AssertUtils.notNull(ext.getModifiedBy(), "修改人为空，新增或更新员工拓展信息失败！");
        StaffExt oldExt = staffExtMapper.selectByStaffCode(ext.getStaffCode());
        if (ObjectUtils.isEmpty(oldExt)) {
            AssertUtils.notNull(ext.getCreatedBy(), "创建人为空，新增或更新员工拓展信息失败！");
            staffExtMapper.insert(ext);
            return;
        }else {
            staffExtMapper.updateBusinessDeptById(oldExt.getId(), ext.getBusinessDeptId(), ext.getBusinessDeptName(), ext.getModifiedBy());
        }
    }

    /**
     * 分页查询
     * @param lxStaffExt 查询条件
     * @return 分页信息
     */
    @Override
    public PageInfo<StaffExt> findByPage(RxStaffExt lxStaffExt) {
        PageHelper.startPage(lxStaffExt.getPage(),lxStaffExt.getPageSize());
        List<StaffExt> staffExtList=staffExtMapper.selectList(lxStaffExt);
        return new PageInfo<StaffExt>(staffExtList);
    }
}
